{"id":3226,"date":"2016-02-25T13:59:38","date_gmt":"2016-02-25T12:59:38","guid":{"rendered":"http:\/\/smart--grid.net\/?page_id=3226"},"modified":"2022-12-03T22:59:03","modified_gmt":"2022-12-03T21:59:03","slug":"programmation-par-contraintes","status":"publish","type":"page","link":"https:\/\/complex-systems-ai.com\/es\/optimizacion-combinatoria\/programacion-de-restricciones\/","title":{"rendered":"Programaci\u00f3n de restricciones"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"3226\" class=\"elementor elementor-3226\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-057ecb1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"057ecb1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-b31d1c5\" data-id=\"b31d1c5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-baac5e6 elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"baac5e6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/complex-systems-ai.com\/es\/optimizacion-combinatoria\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Optimizaci\u00f3n combinatoria<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-6a89cfa\" data-id=\"6a89cfa\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f481075 elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"f481075\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/complex-systems-ai.com\/es\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Pagina de inicio<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-372d372\" data-id=\"372d372\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-11598cb elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"11598cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Programmation_par_contraintes\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Wiki<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-38724724 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"38724724\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5fab409a\" data-id=\"5fab409a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-17f00934 elementor-widget elementor-widget-text-editor\" data-id=\"17f00934\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenido<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Tabla de contenido alternativo\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Palanca<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/complex-systems-ai.com\/es\/optimizacion-combinatoria\/programacion-de-restricciones\/#Programmation-par-contraintes\" >Programaci\u00f3n de restricciones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/complex-systems-ai.com\/es\/optimizacion-combinatoria\/programacion-de-restricciones\/#Solution-par-Programmation-par-contraintes\" >Soluci\u00f3n de programaci\u00f3n de restricciones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/complex-systems-ai.com\/es\/optimizacion-combinatoria\/programacion-de-restricciones\/#Exemple-de-Programmation-par-contraintes-probleme-des-n-reines\" >Ejemplo de programaci\u00f3n de restricciones: problema de n-reinas<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/complex-systems-ai.com\/es\/optimizacion-combinatoria\/programacion-de-restricciones\/#Programmation-par-contraintes-1\" >Programaci\u00f3n de restricciones 1<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/complex-systems-ai.com\/es\/optimizacion-combinatoria\/programacion-de-restricciones\/#Programmation-par-contraintes-2\" >Programaci\u00f3n de restricciones 2<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/complex-systems-ai.com\/es\/optimizacion-combinatoria\/programacion-de-restricciones\/#Discussion\" >Discusi\u00f3n<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/complex-systems-ai.com\/es\/optimizacion-combinatoria\/programacion-de-restricciones\/#Resolution-dun-CSP\" >Resoluci\u00f3n de un CSP<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Programmation-par-contraintes\"><\/span>Programaci\u00f3n de restricciones<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>La programaci\u00f3n de restricciones (PPC) permite resolver problemas de tipo Satisfacci\u00f3n de restricciones (CSP). Un CSP es un problema de modelado en forma de un conjunto de restricciones impuestas a las variables, cada una de estas variables tomando sus valores en un dominio definido.<\/p>\n<p><\/p>\n<div style=\"padding: 5px; background-color: #d5edff; border: 2px solid #3c95e8; -moz-border-radius: 9px; -khtml-border-radius: 9px; -webkit-border-radius: 9px; border-radius: 9px;\">\n<p>Un CSP se define por un triplete (X, D, C, R) tal que:<\/p>\n<ul>\n<li>X = {X<sub>1<\/sub>, X<sub>2<\/sub>,\u2026, X<sub>no<\/sub>} el conjunto de variables del problema;<\/li>\n<li>D una funci\u00f3n que se asocia con cada variable X<sub>I<\/sub> su dominio (conjunto de valores posibles) D (X<sub>I<\/sub>);<\/li>\n<li>C = C<sub>1<\/sub>, VS<sub>2<\/sub>,\u2026, VS<sub>k<\/sub>} el conjunto de restricciones.<\/li>\n<\/ul>\n<\/div>\n<p><\/p>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Solution-par-Programmation-par-contraintes\"><\/span>Soluci\u00f3n de programaci\u00f3n de restricciones<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><\/p>\n<p>Resolver un CSP consiste en asignar valores a las variables, de manera que se satisfagan todas las restricciones. Para ello, necesitamos un vocabulario preciso:<\/p>\n<p><\/p>\n<div style=\"padding: 5px; background-color: #d5edff; border: 2px solid #3c95e8; -moz-border-radius: 9px; -khtml-border-radius: 9px; -webkit-border-radius: 9px; border-radius: 9px;\">\n<ul>\n<li>Una asignaci\u00f3n es una instancia de ciertas variables por valores de sus respectivos dominios. Denotaremos por A = {(X<sub>1<\/sub>, V<sub>1<\/sub>),\u2026} Asignaci\u00f3n que instancia la variable X<sub>1<\/sub> por el valor V<sub>1<\/sub>, etc;<\/li>\n<li>Se dice que una asignaci\u00f3n es total si instancia todas las variables del problema; de lo contrario, se dice que es parcial;<\/li>\n<li>Una asignaci\u00f3n A viola una restricci\u00f3n C<sub>k<\/sub> si todas las variables de C<sub>k<\/sub> se instancian en A y si la relaci\u00f3n definida por C<sub>k<\/sub> no es verificado por la asignaci\u00f3n:<\/li>\n<li>Una asignaci\u00f3n total o parcial es consistente si no viola ninguna restricci\u00f3n; de lo contrario, se dice que es inconsistente;<\/li>\n<li>Una soluci\u00f3n CSP es una asignaci\u00f3n total consistente.<\/li>\n<\/ul>\n<\/div>\n<p><\/p>\n<p>En la programaci\u00f3n de restricciones, cuando un CSP no tiene una soluci\u00f3n, se dice que est\u00e1 demasiado restringido. En este caso, podemos encontrar la asignaci\u00f3n total que viola la menor cantidad de restricciones posibles. Luego hablamos de max-CSP.<\/p>\n<p><\/p>\n<p>Otra posibilidad en la programaci\u00f3n por restricciones es asignar un peso a cada restricci\u00f3n, luego se busca minimizar el peso de las restricciones violadas. Hablamos entonces de VCSP (valorado). Un max-CSP es un VCSP donde todas las restricciones tienen el mismo peso.<\/p>\n<p><\/p>\n<p>Cuando un CSP admite varias soluciones diferentes, se dice que est\u00e1 sub-restringido. Si las soluciones no son todas equivalentes, entonces es posible establecer preferencias entre las soluciones. Agregamos una funci\u00f3n que asocia un valor num\u00e9rico a cada soluci\u00f3n, representando la calidad de esta soluci\u00f3n. El objetivo es maximizar esta funci\u00f3n objetivo. Hablamos entonces de CSOP (satisfacci\u00f3n de restricciones <a href=\"https:\/\/complex-systems-ai.com\/es\/optimizacion-combinatoria\/\">mejoramiento<\/a> problema).<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-9765 size-full\" src=\"https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2020\/09\/Constraint-programming.png\" alt=\"programaci\u00f3n de restricciones\" width=\"540\" height=\"402\" title=\"\" srcset=\"https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2020\/09\/Constraint-programming.png 540w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2020\/09\/Constraint-programming-300x223.png 300w\" sizes=\"(max-width: 540px) 100vw, 540px\" \/><\/p>\n<p><\/p>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Exemple-de-Programmation-par-contraintes-probleme-des-n-reines\"><\/span>Ejemplo de programaci\u00f3n de restricciones: problema de n-reinas<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><\/p>\n<p>Un constructor tiene un terreno con 16 parcelas (4 filas y 4 columnas) que forman un tablero de ajedrez. Quiere deshacerse de las turbinas e\u00f3licas de tal manera que no se activen. Se activan dos aerogeneradores si est\u00e1n en la misma fila, la misma columna o la misma diagonal.<\/p>\n<p><\/p>\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Programmation-par-contraintes-1\"><\/span>Programaci\u00f3n de restricciones 1<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><\/p>\n<p>Las variables son las posiciones de las filas y columnas de las turbinas e\u00f3licas en el tablero de ajedrez. Asociamos a cada aerogenerador i dos variables L<sub>I<\/sub> y C<sub>I<\/sub> correspondientes respectivamente a la fila y la columna sobre la que colocar el aerogenerador. Tenemos el siguiente modelado de programaci\u00f3n de restricciones:<\/p>\n<p><\/p>\n<div style=\"padding: 3px; border: 2px dotted #a5a5a5; background-color: #f6f9fa;\">\n<ul>\n<li>Variables:\n<ul>\n<li>X = {L<sub>1<\/sub>, LOS<sub>2<\/sub>, LOS<sub>3<\/sub>, LOS<sub>4<\/sub>, VS<sub>1<\/sub>, VS<sub>2<\/sub>, VS<sub>3<\/sub>, VS<sub>4<\/sub>}<\/li>\n<\/ul>\n<\/li>\n<li>\u00c1reas:\n<ul>\n<li>D (L<sub>1<\/sub>) = D (L<sub>2<\/sub>) = D (L<sub>3<\/sub>) = D (L<sub>4<\/sub>)={1,2,3,4}<\/li>\n<li>D (C<sub>1<\/sub>) = D (C<sub>2<\/sub>) = D (C<sub>3<\/sub>) = D (C<sub>4<\/sub>)={1,2,3,4}<\/li>\n<\/ul>\n<\/li>\n<li>Restricciones:\n<ul>\n<li>VS<sub>lig<\/sub> = allDiff ({L<sub>1<\/sub>, LOS<sub>2<\/sub>, LOS<sub>3<\/sub>, LOS<sub>4<\/sub>}) para tener valores L<sub>I<\/sub> todos diferentes entre s\u00ed<\/li>\n<li>VS<sub>collar<\/sub> = allDiff ({C<sub>1<\/sub>, VS<sub>2<\/sub>, VS<sub>3<\/sub>, VS<sub>4<\/sub>}) para tener valores C<sub>I<\/sub> todos diferentes entre s\u00ed<\/li>\n<li>VS<sub>dm<\/sub>= {C<sub>I<\/sub>+ L<sub>I<\/sub> ! = C<sub>j<\/sub>+ L<sub>j<\/sub> \/ para todo i y j en {1, 2, 3, 4} e i! = j}<\/li>\n<li>VS<sub>dd<\/sub>= {C<sub>I<\/sub>-LOS<sub>I<\/sub> ! = C<sub>j<\/sub>-LOS<sub>j<\/sub> \/ para todo i y j en {1, 2, 3, 4} e i! = j}<\/li>\n<li>Es la uni\u00f3n de estos juntos.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<p><\/p>\n<p>Esta modelizaci\u00f3n es ingenua ya que uno considera todas las limitaciones sin buscar su significado.<\/p>\n<p><\/p>\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Programmation-par-contraintes-2\"><\/span>Programaci\u00f3n de restricciones 2<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><\/p>\n<p>Es f\u00e1cil notar que habr\u00e1 al menos una turbina e\u00f3lica por columna del tablero de ajedrez (o fila, etc.). La programaci\u00f3n por restricciones entonces consiste en determinar en qu\u00e9 fila se ubica el aerogenerador en la columna i, la variable se anotar\u00e1 X<sub>I<\/sub> :<\/p>\n<p><\/p>\n<div style=\"padding: 3px; border: 2px dotted #a5a5a5; background-color: #f6f9fa;\">\n<ul>\n<li>Variables:\n<ul>\n<li>X = {X<sub>1<\/sub>, X<sub>2<\/sub>, X<sub>3<\/sub>, X<sub>4<\/sub>}<\/li>\n<\/ul>\n<\/li>\n<li>\u00c1reas:\n<ul>\n<li>D (X<sub>1<\/sub>) = D (X<sub>2<\/sub>) = D (X<sub>3<\/sub>) = D (X<sub>4<\/sub>)={1,2,3,4}<\/li>\n<\/ul>\n<\/li>\n<li>Restricciones:\n<ul>\n<li>VS<sub>lig<\/sub> = allDiff ({X<sub>1<\/sub>, X<sub>2<\/sub>, X<sub>3<\/sub>, X<sub>4<\/sub>}) para tener valores X<sub>I<\/sub> todos diferentes entre s\u00ed<\/li>\n<li>VS<sub>dm<\/sub>= {X<sub>I<\/sub>+ yo! = X<sub>j<\/sub>+ j \/ para todo i y j en {1, 2, 3, 4} e i! = j}<\/li>\n<li>VS<sub>dd<\/sub>= {X<sub>I<\/sub>-i! = X<sub>j<\/sub>-j \/ para todo i y j en {1, 2, 3, 4} e i! = j}<\/li>\n<li>Es la uni\u00f3n de estos juntos.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<p><\/p>\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Discussion\"><\/span>Discusi\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><\/p>\n<p>Hay muchas otras formas de modelar el problema. En este caso, \u00bfcu\u00e1l es el mejor modelado? Para eso, existen tres criterios que permiten evaluar la relevancia del modelado: \u00bfmodela mejor el problema? \u00bfFue trivial el modelado? \u00bfEl modelado permite resolver el problema de forma eficaz?<\/p>\n<p><\/p>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Resolution-dun-CSP\"><\/span>Resoluci\u00f3n de un CSP<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><\/p>\n<p>La resoluci\u00f3n de un CSP es un problema Np-Complete en el caso general. El mecanismo de resoluci\u00f3n consiste en repetir los dos pasos siguientes:<\/p>\n<p><\/p>\n<ul class=\"wp-block-list\">\n<li>reducci\u00f3n de problemas mediante filtrado;<\/li>\n<li>navegando por el \u00e1rbol de b\u00fasqueda.<\/li>\n<\/ul>\n<p><\/p>\n<p>Estas dos etapas hacen uso de nociones como la consistencia de arcos o la propagaci\u00f3n de restricciones que no desarrollaremos en este curso. Hay muchos solucionadores de un CSP como, por ejemplo, la biblioteca de herramientas OR de Google.<\/p>\n<p><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>P\u00e1gina principal de Wiki sobre optimizaci\u00f3n combinatoria Programaci\u00f3n de restricciones La programaci\u00f3n de restricciones (CPP) se utiliza para resolver problemas del tipo de satisfacci\u00f3n de restricciones (CSP). A \u2026 <\/p>","protected":false},"author":1,"featured_media":0,"parent":1770,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3226","page","type-page","status-publish","hentry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/pages\/3226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/comments?post=3226"}],"version-history":[{"count":4,"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/pages\/3226\/revisions"}],"predecessor-version":[{"id":17900,"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/pages\/3226\/revisions\/17900"}],"up":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/pages\/1770"}],"wp:attachment":[{"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/media?parent=3226"}],"curies":[{"name":"gracias","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}